package com.zenagro.domain.zenagro;

import java.math.*;
import java.util.*;

import javax.persistence.*;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlRootElement;



import org.openxava.annotations.*;

import com.zenagro.domain.zenagro.base.*;
import com.zenagro.domain.zenagro.expedicion.*;

@View(name="reference", members="fecha,prioridad,estado")

@Entity (name="Pedido")
@Table (name="pedido")
@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class Pedido extends Identificable{
	@Required
	@Column(name="fecha", nullable=false)
	private Date fecha;
	
	@Required
	@ManyToOne @NoCreate @NoModify
	@JoinColumn(name="estado_id",referencedColumnName = "id", nullable=false) //length=45 (en fabricacion, stock, pendiente, servido)
	@ReferenceView("reference")
	private EstadoPedido estado;
		
	@Required
	@Column(name="prioridad", nullable=false)
	private int prioridad;
	
	@Required @NoCreate @NoModify
	@ManyToOne //(fetch=FetchType.LAZY ,optional=false) Parece que el lazy da algun problema con JPaCloner!!!!
    @JoinColumn(name="agricultor_id", referencedColumnName = "id", nullable=false,  unique=false  )
    @ReferenceView ("reference") 
	private Agricultor agricultor;
	
	@Required
	@Column(name="nombre", nullable=false)
	private String nombre;
	
	@Required
	@Column(name="cantidad", nullable=false)
	private BigDecimal cantidad;
	
	
	@Column(name="precio", nullable=false)
	private  BigDecimal precio;
	
	@Column(name="numero_lote", nullable=true)
	private  String numeroLote;
	
	@Required @NoCreate @NoModify
	@SearchAction("Pedido.buscarCultivo")	
	@ManyToOne //(fetch=FetchType.LAZY ,optional=false) Parece que el lazy da algun problema con JPaCloner!!!!
    @JoinColumn(name="cultivo_id", referencedColumnName = "id", nullable=false,  unique=false  )
    @ReferenceView ("reference") 
	//@SearchListCondition("${codigo} < 3")
	private Cultivo cultivo;

	@Required @NoCreate @NoModify
    @ManyToOne //(fetch=FetchType.LAZY ,optional=false) Parece que el lazy da algun problema con JPaCloner!!!!
    @JoinColumn(name="fertilizante_id", referencedColumnName = "id", nullable=false,  unique=false  )
	@ReferenceView("reference")
	private Fertilizante fertilizante;

	@NoCreate @NoModify
    @ManyToOne //(fetch=FetchType.LAZY ,optional=false) Parece que el lazy da algun problema con JPaCloner!!!!
    @JoinColumn(name="compartimento_id", referencedColumnName = "id", nullable=true,  unique=false  )
	private Compartimento compartimento;
	
	public Date getFecha() {
		return fecha;
	}

	public void setFecha(Date fecha) {
		this.fecha = fecha;
	}

	public EstadoPedido getEstado() {
		return estado;
	}

	public void setEstado(EstadoPedido estado) {
		this.estado = estado;
	}

	public int getPrioridad() {
		return prioridad;
	}

	public void setPrioridad(int prioridad) {
		this.prioridad = prioridad;
	}

	public Agricultor getAgricultor() {
		return agricultor;
	}

	public void setAgricultor(Agricultor agricultor) {
		this.agricultor = agricultor;
	}

	public String getNombre() {
		return nombre;
	}

	public void setNombre(String nombre) {
		this.nombre = nombre;
	}

	public BigDecimal getCantidad() {
		return cantidad;
	}

	public void setCantidad(BigDecimal cantidad) {
		this.cantidad = cantidad;
	}

	public BigDecimal getPrecio() {
		return precio;
	}

	public void setPrecio(BigDecimal precio) {
		this.precio = precio;
	}

	public String getNumeroLote() {
		return numeroLote;
	}

	public void setNumeroLote(String numeroLote) {
		this.numeroLote = numeroLote;
	}

	public Cultivo getCultivo() {
		return cultivo;
	}

	public void setCultivo(Cultivo cultivo) {
		this.cultivo = cultivo;
	}

	public Fertilizante getFertilizante() {
		return fertilizante;
	}

	public void setFertilizante(Fertilizante fertilizante) {
		this.fertilizante = fertilizante;
	}

	public Compartimento getCompartimento() {
		return compartimento;
	}

	public void setCompartimento(Compartimento compartimento) {
		this.compartimento = compartimento;
	}
	
	
	
	


}
